iT邦幫忙

1

[套件介紹] - DataToWord - RAG with Data

  • 分享至 

  • xImage
  •  

各位前輩好,小弟目前正在試圖前往開源的路上,目前先從生活中可能會碰到的問題來試著寫一些小套件來解決,對於文章有任何問題歡迎來信或留言討論,我的信箱是 nickchen1998@gmail.com

今天要介紹的套件名字叫做 DataToWord,這個套件主要是協助我們將資料型態的檔案內容轉換成文章,提高我們在進行 RAG 的時候的搜索效果。

套件網址:https://pypi.org/project/datatoword/0.7.0/

什麼是資料型態的檔案?

簡單說明一下什麼是資料型態的檔案,比方說常見的 csv、json 等等,是用來做資料傳輸、交換的,可以看一下下方的格式:

  • json
{
    "company": {
        "name": "Tech Innovators Inc.",
        "founded": 2010,
        "employees": [
            {
                "name": "Alice Smith",
                "age": 30,
                "position": "Software Engineer",
                "skills": ["Python", "Django", "Machine Learning"],
                "projects": [
                    {"name": "AI Chatbot", "duration_months": 12, "team_size": 5},
                    {"name": "E-commerce Platform", "duration_months": 8, "team_size": 3}
                ]
            },
            {
                "name": "Bob Johnson",
                "age": 35,
                "position": "Data Scientist",
                "skills": ["Python", "Pandas", "Deep Learning"],
                "projects": [
                    {"name": "Data Analysis Pipeline", "duration_months": 6, "team_size": 4},
                    {"name": "Recommendation System", "duration_months": 10, "team_size": 7}
                ]
            }
        ]
    }
}
  • csv
name,age,position,skills,project_name,project_duration_months,project_team_size
            Alice Smith,30,Software Engineer,"Python;Django;Machine Learning","AI Chatbot",12,5
            Alice Smith,30,Software Engineer,"Python;Django;Machine Learning","E-commerce Platform",8,3
            Bob Johnson,35,Data Scientist,"Python;Pandas;Deep Learning","Data Analysis Pipeline",6,4
            Bob Johnson,35,Data Scientist,"Python;Pandas;Deep Learning","Recommendation System",10,7

而我們在進行 RAG 的時候,是將文本的內容轉換為向量,然後存進資料庫當中進行查詢,而在搜尋向量的時候,理論上會去搜尋與你的語句最相近的段落,因此可想而知,如果直接把上面的資料轉換成向量,然後使用一班正常問答的話,會沒有辦法正確找到相對應的資料。

該怎麼使用這個套件?

這邊想到的辦法是將所有的資料,重新轉換成一段一段可以讀的文本,然後再寫入到向量資料庫當中進行查詢,讓我們看一下 DataToWord 這個套件的用法:

  • create_documents

這個套件是使用 LangChain 套件來協助串接 OpenAI 的模型,預設是使用 gpt-4o,我們可以透過直接把 binary 型態的檔案傳遞給 create_documents 這個方法,來取得轉換後的文本內容。

from datatoword import DataToWord


with open('data.csv', 'rb') as file:
    file_binary_content = file.read()

data_to_word = DataToWord()
data_to_word.create_documents(
    file_name='data.csv',
    file_description='這是一個測試的檔案',
    file_binary_content=file_binary_content
)
  • create_content

當然,如果你只想單純取得轉換後的文本內容的話,也可以呼叫 create_content 這個方法,裡面會直接協助你轉換成 List[str],這個資料型態,讓你直接做取用

from datatoword import DataToWord


with open('data.csv', 'rb') as file:
    file_binary_content = file.read()

data_to_word = DataToWord()
data_to_word.create_content(
    file_name='data.csv',
    file_description='這是一個測試的檔案',
    file_binary_content=file_binary_content
)

以上就是這次介紹的小套件,如果有任何問題,歡迎留言一起討論,感謝您的觀看!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

3
ychleo
iT邦新手 5 級 ‧ 2024-09-05 10:27:33

https://ithelp.ithome.com.tw/upload/images/20240905/20169103WqlSiyi9NK.png

你好:對此專案有興趣,但是測試範例後出現錯誤:
ValueError: pass openai_api_key or set OPENAI_API_KEY in environment variable
不知道是否哪個步驟有問題?

您好,很抱歉這部份我文件似乎沒有寫好,如果您需要使用的話,需要把您的 key 設定到 OPENAI_API_KEY 這個環境變數,或是將 kye 在實體化的時候帶入給物件,帶入方法如下:

from datatoword import DataToWord

data_to_word = DataToWord(
    openai_api_key="sk-xxxx"
)

我要留言

立即登入留言